π Java μ€κΈ 1νΈ ν΅μ¬ μμ½ μ΄μ 리
NOTE
Object ν΄λμ€, λΆλ³ κ°μ²΄, String, λνΌ/Enum, java.time, μ€μ²©/μ΅λͺ ν΄λμ€, μμΈ μ²λ¦¬ λ± Java μ€κΈ 1νΈ ν΅μ¬ μμ½.
π κ°λ
1. Object ν΄λμ€: λͺ¨λ κ°μ²΄μ λΏλ¦¬
- κ°λ
: μλ°μ λͺ¨λ ν΄λμ€λ μ΅μμ λΆλͺ¨μΈ
Objectλ₯Ό μλμΌλ‘ μμλ°μ΅λλ€. - μ μ¬μ©νλκ°?: κ³΅ν΅ κΈ°λ₯μ μ 곡νκ³ , λͺ¨λ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ λ€νμ±μ μ μ μ μ 곡ν©λλ€.
- ν΅μ¬ λ©μλ:
toString(): κ°μ²΄μ μνλ₯Ό λ¬Έμμ΄λ‘ νν (λλ²κΉ νμ).equals(): **λμΌμ±(==, μ£Όμκ°)**μ΄ μλ λλ±μ±(λ Όλ¦¬μ κ°μ) λΉκ΅λ₯Ό μν΄ λ°λμ μ€λ²λΌμ΄λ© νμ.hashCode():equalsλ₯Ό μ¬μ μνλ€λ©΄ ν΄μ κΈ°λ° μ»¬λ μ μ μν΄ λ°λμ ν¨κ» μ¬μ μ.
2. λΆλ³ κ°μ²΄ (Immutable Object): μμ ν 곡μ
- κ°λ : κ°μ²΄ μμ± ν λ΄λΆμ μν(νλ)λ₯Ό λ³κ²½ν μ μλ κ°μ²΄.
- μ μ¬μ©νλκ°?: μ¬λ¬ λ³μκ° νλμ κ°μ²΄λ₯Ό 곡μ ν λ λ°μνλ **μ¬μ΄λ μ΄ννΈ(Side Effect)**λ₯Ό μμ² μ°¨λ¨ν©λλ€.
- ν΅μ¬ μ€κ³:
- νλλ₯Ό
finalλ‘ μ μΈνκ³ Setterλ₯Ό λ§λ€μ§ μμ. - κ° λ³κ²½μ΄ νμνλ©΄ κΈ°μ‘΄ κ°μ²΄λ₯Ό μμ νλ λμ , λ³κ²½λ κ°μ κ°μ§ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ¬ λ°ν.
- νλλ₯Ό
3. String ν΄λμ€: λ¬Έμμ΄μ λͺ¨λ κ²
- νΉμ§: μλ°μ
Stringμ λνμ μΈ λΆλ³ κ°μ²΄μ λλ€. - String Pool: 리ν°λ΄λ‘ μμ±λ λ¬Έμμ΄μ ν μμμ μ μ© κ³΅κ°μ μ μ₯λμ΄ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν©λλ€.
- μ±λ₯ μ΅μ ν:
- λ¨μ λ¬Έμμ΄ μ°κ²°μ μ»΄νμΌλ¬κ° μ΅μ νν΄ μ£Όμ§λ§, λ°λ³΅λ¬Έ λ΄ μ°κ²°μ λ°λμ
StringBuilderλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. StringBuilderλ κ°λ³(Mutable)μ΄λ―λ‘ λ΄λΆ λ²νΌλ₯Ό μ§μ μμ νμ¬ μ±λ₯μ΄ λ°μ΄λ©λλ€.
- λ¨μ λ¬Έμμ΄ μ°κ²°μ μ»΄νμΌλ¬κ° μ΅μ νν΄ μ£Όμ§λ§, λ°λ³΅λ¬Έ λ΄ μ°κ²°μ λ°λμ
4. λνΌ ν΄λμ€ & Enum: νμ μμ μ±
- Wrapper Class:
intκ°μ κΈ°λ³ΈνμIntegerκ°μ κ°μ²΄λ‘ κ°μΈλ κ².nullννμ΄ κ°λ₯νκ³ μ λ€λ¦μμ νμμ λλ€. (μ€ν λ°μ±/μΈλ°μ± μ§μ) - Enum (μ΄κ±°ν): κ΄λ ¨ μλ μμλ₯Ό λͺ¨μ μ μν νΉμν ν΄λμ€.
- μ₯μ : νμ©λμ§ μλ κ°μ΄ λ€μ΄μ€λ κ²μ μ»΄νμΌ μμ μ λ§μμ£Όλ νμ μμ μ± μ 곡.
- νμ©: λ¨μ μμλ₯Ό λμ΄ νλμ λ©μλλ₯Ό μΆκ°ν΄ λΉμ¦λμ€ λ‘μ§μ λ΄ν¬ν μ μμ.
5. λ μ§μ μκ° (java.time): νμ€ API
- κ°λ
: Java 8λΆν° λμ
λ
LocalDate,LocalDateTimeλ±. - μ μ¬μ©νλκ°?: κΈ°μ‘΄
Date,Calendarμ κ²°ν¨(κ°λ³μ±, 볡μ‘ν μ κ³μ° λ±)μ ν΄κ²°νκΈ° μν΄ λμ . - ν΅μ¬ νΉμ§:
- λΆλ³(Immutable): λͺ¨λ κ³μ° λ©μλλ μλ‘μ΄ κ°μ²΄λ₯Ό λ°νν¨.
- λͺ
νμ±:
Period(λ μ§ μ°¨μ΄),Duration(μκ° μ°¨μ΄) λ±μΌλ‘ ꡬλΆμ΄ λͺ νν¨.
6. μ€μ²© & μ΅λͺ ν΄λμ€: μΊ‘μνμ κ·ΉμΉ
- μ μ μ€μ²© ν΄λμ€: μΈλΆ ν΄λμ€μ λ°μ νμ§λ§ μΈμ€ν΄μ€ κ° κ³΅μ κ° μμ λ μ¬μ©.
- λ΄λΆ ν΄λμ€: μΈλΆ μΈμ€ν΄μ€μ λ©€λ²μ μ κ·Όν΄μΌ ν λ μ¬μ©.
- μ΅λͺ ν΄λμ€: μ΄λ¦ μμ΄ μ¦μμμ μΈν°νμ΄μ€/ν΄λμ€λ₯Ό ꡬν. μΌνμ± λ‘μ§μ μ°μ΄λ©°, μλ° 8λΆν°λ **λλ€(Lambda)**λ‘ λ체 κ°λ₯.
7. μμΈ μ²λ¦¬ (Exception): νλ‘κ·Έλ¨μ λ°©μ΄λ§
- μμΈ κ³μΈ΅:
ThrowableβError(μμ€ν μ₯μ ) &Exception(μ ν리μΌμ΄μ μμΈ). - μ²΄ν¬ μμΈ vs μΈμ²΄ν¬ μμΈ:
- Checked: μ»΄νμΌλ¬κ° μ²λ¦¬λ₯Ό κ°μ ν¨. μΈλΆμ μμ‘΄νλ λ‘μ§μ μ¬μ©.
- Unchecked (RuntimeException): κ°λ°μμ μ€μλ‘ λ°μνλ μμΈ. μ²λ¦¬κ° κ°μ λμ§ μμ.
- Try-With-Resources:
AutoCloseableμ ꡬνν μμμ μλμΌλ‘ λ«μμ€ (λ©λͺ¨λ¦¬ λμ λ°©μ§).
π νμ΅ νκΈ°
βμλ° μ€κΈ 1νΈμ λ¨μν λ¬Έλ²μ λ°°μ°λ κ³Όμ μ΄ μλλΌ, **κ°μ²΄ μ§ν₯ μ€κ³μ ν΅μ¬μΈ βλΆλ³μ±βκ³Ό βνμ μμ μ±β**μ μ΄λ»κ² μ€λ¬΄ μ½λλ‘ λ Ήμ¬λ΄λμ§ λ°°μ°λ κ³Όμ μ΄μλ€.β